## Test loading an ELF file with DWARF. First we make the ELF file from yaml,
## then we convert the ELF file to GSYM, then we do lookups on the newly
## created GSYM, and finally we dump the entire GSYM.

# RUN: yaml2obj %s -o %t
# RUN: llvm-gsymutil --convert %t -o %t.gsym 2>&1 | FileCheck %s --check-prefix=CONVERT
# RUN: llvm-gsymutil --address=0x400391 --address=0x4004cd %t.gsym 2>&1 | FileCheck %s --check-prefix=ADDR
# RUN: echo -e "0x400391 %/t.gsym\n0x4004cd %/t.gsym" | llvm-gsymutil --addresses-from-stdin  2>&1 | FileCheck %s --check-prefix=ADDRI --dump-input=always
# RUN: llvm-gsymutil --address=0x400391 --address=0x4004cd --verbose %t.gsym 2>&1 | FileCheck %s --check-prefix=ADDRV --dump-input=always
# RUN: llvm-gsymutil --address=0x400391 --address=0x4004cd --verbose %t.gsym 2>&1 | FileCheck %s --check-prefix=ADDRV --dump-input=always
# RUN: llvm-gsymutil %t.gsym 2>&1 | FileCheck %s --check-prefix=DUMP

# ADDR: Looking up addresses in "{{.*\.yaml\.tmp\.gsym}}":
# ADDR: 0x0000000000400391: _init
# ADDR: 0x00000000004004cd: main @ /tmp/main.cpp:1

# ADDRI: 0x0000000000400391: _init
# ADDRI-EMPTY:
# ADDRI: 0x00000000004004cd: main @ /tmp/main.cpp:1
# ADDRI-EMPTY:

# ADDRV: Looking up addresses in "{{.*\.yaml\.tmp\.gsym}}":
# ADDRV: FunctionInfo for 0x0000000000400391:
# ADDRV: [0x0000000000400390 - 0x0000000000400390) "_init"
# ADDRV: LookupResult for 0x0000000000400391:
# ADDRV: 0x0000000000400391: _init
# ADDRV: FunctionInfo for 0x00000000004004cd:
# ADDRV: [0x00000000004004cd - 0x00000000004004df) "main"
# ADDRV: LineTable:
# ADDRV:   0x00000000004004cd /tmp/main.cpp:1
# ADDRV:   0x00000000004004d8 /tmp/main.cpp:2
# ADDRV:   0x00000000004004dd /tmp/main.cpp:3
# ADDRV: LookupResult for 0x00000000004004cd:
# ADDRV: 0x00000000004004cd: main @ /tmp/main.cpp:1

# CONVERT: Input file: {{.*\.yaml\.tmp}}
# CONVERT: Output file (x86_64): {{.*\.yaml\.tmp\.gsym}}
# CONVERT: Loaded 1 functions from DWARF.
# CONVERT: Loaded 9 functions from symbol table.
# CONVERT: Pruned 0 functions, ended with 10 total

# DUMP:      Header:
# DUMP-NEXT:   Magic        = 0x4753594d
# DUMP-NEXT:   Version      = 0x0001
# DUMP-NEXT:   AddrOffSize  = 0x02
# DUMP-NEXT:   UUIDSize     = 0x14
# DUMP-NEXT:   BaseAddress  = 0x0000000000400000
# DUMP-NEXT:   NumAddresses = 0x0000000a
# DUMP-NEXT:   StrtabOffset = 0x00000080
# DUMP-NEXT:   StrtabSize   = 0x00000091
# DUMP-NEXT:   UUID         = 0e62be89cad89206110ed1375b618656f32ac906

# DUMP:      Address Table:
# DUMP-NEXT: INDEX  OFFSET16 (ADDRESS)
# DUMP-NEXT: ====== ===============================
# DUMP-NEXT: [   0] 0x0390 (0x0000000000400390)
# DUMP-NEXT: [   1] 0x03e0 (0x00000000004003e0)
# DUMP-NEXT: [   2] 0x0410 (0x0000000000400410)
# DUMP-NEXT: [   3] 0x0440 (0x0000000000400440)
# DUMP-NEXT: [   4] 0x0480 (0x0000000000400480)
# DUMP-NEXT: [   5] 0x04a0 (0x00000000004004a0)
# DUMP-NEXT: [   6] 0x04cd (0x00000000004004cd)
# DUMP-NEXT: [   7] 0x04e0 (0x00000000004004e0)
# DUMP-NEXT: [   8] 0x0550 (0x0000000000400550)
# DUMP-NEXT: [   9] 0x0554 (0x0000000000400554)

# DUMP:      Address Info Offsets:
# DUMP-NEXT: INDEX  Offset
# DUMP-NEXT: ====== ==========
# DUMP-NEXT: [   0] 0x00000114
# DUMP-NEXT: [   1] 0x00000124
# DUMP-NEXT: [   2] 0x00000134
# DUMP-NEXT: [   3] 0x00000144
# DUMP-NEXT: [   4] 0x00000154
# DUMP-NEXT: [   5] 0x00000164
# DUMP-NEXT: [   6] 0x00000174
# DUMP-NEXT: [   7] 0x00000194
# DUMP-NEXT: [   8] 0x000001a4
# DUMP-NEXT: [   9] 0x000001b4

# DUMP:      Files:
# DUMP-NEXT: INDEX  DIRECTORY  BASENAME   PATH
# DUMP-NEXT: ====== ========== ========== ==============================
# DUMP-NEXT: [   0] 0x00000000 0x00000000
# DUMP-NEXT: [   1] 0x00000006 0x0000000b /tmp/main.cpp

# DUMP:      String table:
# DUMP-NEXT: 0x00000000: ""
# DUMP-NEXT: 0x00000001: "main"
# DUMP-NEXT: 0x00000006: "/tmp"
# DUMP-NEXT: 0x0000000b: "main.cpp"
# DUMP-NEXT: 0x00000014: "deregister_tm_clones"
# DUMP-NEXT: 0x00000029: "register_tm_clones"
# DUMP-NEXT: 0x0000003c: "__do_global_dtors_aux"
# DUMP-NEXT: 0x00000052: "frame_dummy"
# DUMP-NEXT: 0x0000005e: "__libc_csu_fini"
# DUMP-NEXT: 0x0000006e: "_fini"
# DUMP-NEXT: 0x00000074: "__libc_csu_init"
# DUMP-NEXT: 0x00000084: "_start"
# DUMP-NEXT: 0x0000008b: "_init"
# DUMP:      FunctionInfo @ 0x00000114: [0x0000000000400390 - 0x0000000000400390) "_init"
# DUMP:      FunctionInfo @ 0x00000124: [0x00000000004003e0 - 0x00000000004003e0) "_start"
# DUMP:      FunctionInfo @ 0x00000134: [0x0000000000400410 - 0x0000000000400410) "deregister_tm_clones"
# DUMP:      FunctionInfo @ 0x00000144: [0x0000000000400440 - 0x0000000000400440) "register_tm_clones"
# DUMP:      FunctionInfo @ 0x00000154: [0x0000000000400480 - 0x0000000000400480) "__do_global_dtors_aux"
# DUMP:      FunctionInfo @ 0x00000164: [0x00000000004004a0 - 0x00000000004004a0) "frame_dummy"
# DUMP:      FunctionInfo @ 0x00000174: [0x00000000004004cd - 0x00000000004004df) "main"
# DUMP-NEXT: LineTable:
# DUMP-NEXT:   0x00000000004004cd /tmp/main.cpp:1
# DUMP-NEXT:   0x00000000004004d8 /tmp/main.cpp:2
# DUMP-NEXT:   0x00000000004004dd /tmp/main.cpp:3
# DUMP:      FunctionInfo @ 0x00000194: [0x00000000004004e0 - 0x0000000000400545) "__libc_csu_init"
# DUMP:      FunctionInfo @ 0x000001a4: [0x0000000000400550 - 0x0000000000400552) "__libc_csu_fini"
# DUMP:      FunctionInfo @ 0x000001b4: [0x0000000000400554 - 0x000000000040055d) "_fini"
--- !ELF
FileHeader:
  Class:           ELFCLASS64
  Data:            ELFDATA2LSB
  Type:            ET_EXEC
  Machine:         EM_X86_64
  Entry:           0x00000000004003E0
Sections:
  - Name:            .interp
    Type:            SHT_PROGBITS
    Flags:           [ SHF_ALLOC ]
    Address:         0x0000000000400238
    AddressAlign:    0x0000000000000001
    Content:         2F6C696236342F6C642D6C696E75782D7838362D36342E736F2E3200
  - Name:            .note.ABI-tag
    Type:            SHT_NOTE
    Flags:           [ SHF_ALLOC ]
    Address:         0x0000000000400254
    AddressAlign:    0x0000000000000004
    Notes:
      - Name:            GNU
        Desc:            '00000000020000000600000020000000'
        Type:            0x00000001
  - Name:            .note.gnu.build-id
    Type:            SHT_NOTE
    Flags:           [ SHF_ALLOC ]
    Address:         0x0000000000400274
    AddressAlign:    0x0000000000000004
    Notes:
      - Name:            GNU
        Desc:            0E62BE89CAD89206110ED1375B618656F32AC906
        Type:            0x00000003
  - Name:            .gnu.hash
    Type:            SHT_GNU_HASH
    Flags:           [ SHF_ALLOC ]
    Address:         0x0000000000400298
    Link:            .dynsym
    AddressAlign:    0x0000000000000008
    Header:
      SymNdx:          0x00000001
      Shift2:          0x00000000
    BloomFilter:     [ 0x0000000000000000 ]
    HashBuckets:     [ 0x00000000 ]
    HashValues:      [  ]
  - Name:            .gnu.version
    Type:            SHT_GNU_versym
    Flags:           [ SHF_ALLOC ]
    Address:         0x0000000000400338
    Link:            .dynsym
    AddressAlign:    0x0000000000000002
    EntSize:         0x0000000000000002
    Entries:         [ 0, 2, 0 ]
  - Name:            .gnu.version_r
    Type:            SHT_GNU_verneed
    Flags:           [ SHF_ALLOC ]
    Address:         0x0000000000400340
    Link:            .dynstr
    AddressAlign:    0x0000000000000008
    Info:            0x0000000000000001
    Dependencies:
      - Version:         1
        File:            libc.so.6
        Entries:
          - Name:            GLIBC_2.2.5
            Hash:            157882997
            Flags:           0
            Other:           2
  - Name:            .rela.dyn
    Type:            SHT_RELA
    Flags:           [ SHF_ALLOC ]
    Address:         0x0000000000400360
    Link:            .dynsym
    AddressAlign:    0x0000000000000008
    EntSize:         0x0000000000000018
    Relocations:
      - Offset:          0x0000000000600FF8
        Symbol:          __gmon_start__
        Type:            R_X86_64_GLOB_DAT
  - Name:            .rela.plt
    Type:            SHT_RELA
    Flags:           [ SHF_ALLOC, SHF_INFO_LINK ]
    Address:         0x0000000000400378
    Link:            .dynsym
    AddressAlign:    0x0000000000000008
    EntSize:         0x0000000000000018
    Info:            .got.plt
    Relocations:
      - Offset:          0x0000000000601018
        Symbol:          __libc_start_main
        Type:            R_X86_64_JUMP_SLOT
  - Name:            .init
    Type:            SHT_PROGBITS
    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
    Address:         0x0000000000400390
    AddressAlign:    0x0000000000000004
    Content:         4883EC08488B055D0C20004885C07405E82B0000004883C408C3
  - Name:            .plt
    Type:            SHT_PROGBITS
    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
    Address:         0x00000000004003B0
    AddressAlign:    0x0000000000000010
    EntSize:         0x0000000000000010
    Content:         FF35520C2000FF25540C20000F1F4000FF25520C20006800000000E9E0FFFFFF
  - Name:            .plt.got
    Type:            SHT_PROGBITS
    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
    Address:         0x00000000004003D0
    AddressAlign:    0x0000000000000008
    Content:         FF25220C20006690
  - Name:            .text
    Type:            SHT_PROGBITS
    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
    Address:         0x00000000004003E0
    AddressAlign:    0x0000000000000010
    Content:         31ED4989D15E4889E24883E4F0505449C7C05005400048C7C1E004400048C7C7CD044000E8B7FFFFFFF4660F1F440000B82F10600055482D281060004883F80E4889E577025DC3B8000000004885C074F45DBF28106000FFE00F1F8000000000B82810600055482D2810600048C1F8034889E54889C248C1EA3F4801D048D1F875025DC3BA000000004885D274F45D4889C6BF28106000FFE20F1F8000000000803D9D0B2000007511554889E5E87EFFFFFF5DC6058A0B200001F3C30F1F400048833D7809200000741EB8000000004885C0741455BF200E60004889E5FFD05DE97BFFFFFF0F1F00E973FFFFFF554889E5897DFC488975F0B8000000005DC39041574189FF41564989F641554989D541544C8D251809200055488D2D18092000534C29E531DB48C1FD034883EC08E87DFEFFFF4885ED741E0F1F8400000000004C89EA4C89F64489FF41FF14DC4883C3014839EB75EA4883C4085B5D415C415D415E415FC390662E0F1F840000000000F3C3
  - Name:            .fini
    Type:            SHT_PROGBITS
    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
    Address:         0x0000000000400554
    AddressAlign:    0x0000000000000004
    Content:         4883EC084883C408C3
  - Name:            .rodata
    Type:            SHT_PROGBITS
    Flags:           [ SHF_ALLOC ]
    Address:         0x0000000000400560
    AddressAlign:    0x0000000000000008
    Content:         '01000200000000000000000000000000'
  - Name:            .eh_frame_hdr
    Type:            SHT_PROGBITS
    Flags:           [ SHF_ALLOC ]
    Address:         0x0000000000400570
    AddressAlign:    0x0000000000000004
    Content:         011B033B340000000500000040FEFFFF8000000070FEFFFF500000005DFFFFFFA800000070FFFFFFC8000000E0FFFFFF10010000
  - Name:            .eh_frame
    Type:            SHT_PROGBITS
    Flags:           [ SHF_ALLOC ]
    Address:         0x00000000004005A8
    AddressAlign:    0x0000000000000008
    Content:         1400000000000000017A5200017810011B0C070890010710140000001C00000018FEFFFF2A00000000000000000000001400000000000000017A5200017810011B0C070890010000240000001C000000B8FDFFFF20000000000E10460E184A0F0B770880003F1A3B2A332422000000001C00000044000000ADFEFFFF1200000000410E108602430D064D0C07080000004400000064000000A0FEFFFF6500000000420E108F02450E188E03450E208D04450E288C05480E308606480E3883074D0E406C0E38410E30410E28420E20420E18420E10420E080014000000AC000000C8FEFFFF02000000000000000000000000000000
  - Name:            .init_array
    Type:            SHT_INIT_ARRAY
    Flags:           [ SHF_WRITE, SHF_ALLOC ]
    Address:         0x0000000000600E10
    AddressAlign:    0x0000000000000008
    EntSize:         0x0000000000000008
    Content:         A004400000000000
  - Name:            .fini_array
    Type:            SHT_FINI_ARRAY
    Flags:           [ SHF_WRITE, SHF_ALLOC ]
    Address:         0x0000000000600E18
    AddressAlign:    0x0000000000000008
    EntSize:         0x0000000000000008
    Content:         '8004400000000000'
  - Name:            .jcr
    Type:            SHT_PROGBITS
    Flags:           [ SHF_WRITE, SHF_ALLOC ]
    Address:         0x0000000000600E20
    AddressAlign:    0x0000000000000008
    Content:         '0000000000000000'
  - Name:            .dynamic
    Type:            SHT_DYNAMIC
    Flags:           [ SHF_WRITE, SHF_ALLOC ]
    Address:         0x0000000000600E28
    Link:            .dynstr
    AddressAlign:    0x0000000000000008
    EntSize:         0x0000000000000010
    Entries:
      - Tag:             DT_NEEDED
        Value:           0x0000000000000001
      - Tag:             DT_INIT
        Value:           0x0000000000400390
      - Tag:             DT_FINI
        Value:           0x0000000000400554
      - Tag:             DT_INIT_ARRAY
        Value:           0x0000000000600E10
      - Tag:             DT_INIT_ARRAYSZ
        Value:           0x0000000000000008
      - Tag:             DT_FINI_ARRAY
        Value:           0x0000000000600E18
      - Tag:             DT_FINI_ARRAYSZ
        Value:           0x0000000000000008
      - Tag:             DT_GNU_HASH
        Value:           0x0000000000400298
      - Tag:             DT_STRTAB
        Value:           0x0000000000400300
      - Tag:             DT_SYMTAB
        Value:           0x00000000004002B8
      - Tag:             DT_STRSZ
        Value:           0x0000000000000038
      - Tag:             DT_SYMENT
        Value:           0x0000000000000018
      - Tag:             DT_DEBUG
        Value:           0x0000000000000000
      - Tag:             DT_PLTGOT
        Value:           0x0000000000601000
      - Tag:             DT_PLTRELSZ
        Value:           0x0000000000000018
      - Tag:             DT_PLTREL
        Value:           0x0000000000000007
      - Tag:             DT_JMPREL
        Value:           0x0000000000400378
      - Tag:             DT_RELA
        Value:           0x0000000000400360
      - Tag:             DT_RELASZ
        Value:           0x0000000000000018
      - Tag:             DT_RELAENT
        Value:           0x0000000000000018
      - Tag:             DT_VERNEED
        Value:           0x0000000000400340
      - Tag:             DT_VERNEEDNUM
        Value:           0x0000000000000001
      - Tag:             DT_VERSYM
        Value:           0x0000000000400338
      - Tag:             DT_NULL
        Value:           0x0000000000000000
      - Tag:             DT_NULL
        Value:           0x0000000000000000
      - Tag:             DT_NULL
        Value:           0x0000000000000000
      - Tag:             DT_NULL
        Value:           0x0000000000000000
      - Tag:             DT_NULL
        Value:           0x0000000000000000
      - Tag:             DT_NULL
        Value:           0x0000000000000000
  - Name:            .got
    Type:            SHT_PROGBITS
    Flags:           [ SHF_WRITE, SHF_ALLOC ]
    Address:         0x0000000000600FF8
    AddressAlign:    0x0000000000000008
    EntSize:         0x0000000000000008
    Content:         '0000000000000000'
  - Name:            .got.plt
    Type:            SHT_PROGBITS
    Flags:           [ SHF_WRITE, SHF_ALLOC ]
    Address:         0x0000000000601000
    AddressAlign:    0x0000000000000008
    EntSize:         0x0000000000000008
    Content:         280E60000000000000000000000000000000000000000000C603400000000000
  - Name:            .data
    Type:            SHT_PROGBITS
    Flags:           [ SHF_WRITE, SHF_ALLOC ]
    Address:         0x0000000000601020
    AddressAlign:    0x0000000000000001
    Content:         '00000000'
  - Name:            .bss
    Type:            SHT_NOBITS
    Flags:           [ SHF_WRITE, SHF_ALLOC ]
    Address:         0x0000000000601024
    AddressAlign:    0x0000000000000001
    Size:            0x0000000000000004
  - Name:            .comment
    Type:            SHT_PROGBITS
    Flags:           [ SHF_MERGE, SHF_STRINGS ]
    AddressAlign:    0x0000000000000001
    EntSize:         0x0000000000000001
    Content:         4743433A2028474E552920342E382E3520323031353036323320285265642048617420342E382E352D33362900
  - Name:            .debug_aranges
    Type:            SHT_PROGBITS
    AddressAlign:    0x0000000000000001
    Content:         2C000000020000000000080000000000CD04400000000000120000000000000000000000000000000000000000000000
  - Name:            .debug_info
    Type:            SHT_PROGBITS
    AddressAlign:    0x0000000000000001
    Content:         8700000004000000000008011D000000040F00000005000000CD04400000000000120000000000000000000000020A00000001016B000000CD044000000000001200000000000000019C6B000000031800000001016B00000002916C030000000001017200000002916000040405696E740005087800000005087E00000006830000000701066B00000000
  - Name:            .debug_abbrev
    Type:            SHT_PROGBITS
    AddressAlign:    0x0000000000000001
    Content:         011101250E130B030E1B0E1101120710170000022E013F19030E3A0B3B0B491311011207401897421901130000030500030E3A0B3B0B4913021800000424000B0B3E0B03080000050F000B0B49130000062600491300000724000B0B3E0B030E000000
  - Name:            .debug_line
    Type:            SHT_PROGBITS
    AddressAlign:    0x0000000000000001
    Content:         3800000002001F0000000101FB0E0D000101010100000001000001006D61696E2E6370700000000000000902CD0440000000000001AD590202000101
  - Name:            .debug_str
    Type:            SHT_PROGBITS
    Flags:           [ SHF_MERGE, SHF_STRINGS ]
    AddressAlign:    0x0000000000000001
    EntSize:         0x0000000000000001
    Content:         61726776002F746D70006D61696E006D61696E2E637070006172676300474E5520432B2B20342E382E3520323031353036323320285265642048617420342E382E352D333629202D6D74756E653D67656E65726963202D6D617263683D7838362D3634202D67202D4F30006368617200
ProgramHeaders:
  - Type: PT_LOAD
    Flags: [ PF_X, PF_R ]
    VAddr: 0x0000000000400000
    Align: 1024
    FirstSec: .interp
    LastSec:  .dynstr
Symbols:
  - Name:            .interp
    Type:            STT_SECTION
    Section:         .interp
    Value:           0x0000000000400238
  - Name:            .note.ABI-tag
    Type:            STT_SECTION
    Section:         .note.ABI-tag
    Value:           0x0000000000400254
  - Name:            .note.gnu.build-id
    Type:            STT_SECTION
    Section:         .note.gnu.build-id
    Value:           0x0000000000400274
  - Name:            .gnu.hash
    Type:            STT_SECTION
    Section:         .gnu.hash
    Value:           0x0000000000400298
  - Name:            .dynsym
    Type:            STT_SECTION
    Section:         .dynsym
    Value:           0x00000000004002B8
  - Name:            .dynstr
    Type:            STT_SECTION
    Section:         .dynstr
    Value:           0x0000000000400300
  - Name:            .gnu.version
    Type:            STT_SECTION
    Section:         .gnu.version
    Value:           0x0000000000400338
  - Name:            .gnu.version_r
    Type:            STT_SECTION
    Section:         .gnu.version_r
    Value:           0x0000000000400340
  - Name:            .rela.dyn
    Type:            STT_SECTION
    Section:         .rela.dyn
    Value:           0x0000000000400360
  - Name:            .rela.plt
    Type:            STT_SECTION
    Section:         .rela.plt
    Value:           0x0000000000400378
  - Name:            .init
    Type:            STT_SECTION
    Section:         .init
    Value:           0x0000000000400390
  - Name:            .plt
    Type:            STT_SECTION
    Section:         .plt
    Value:           0x00000000004003B0
  - Name:            .plt.got
    Type:            STT_SECTION
    Section:         .plt.got
    Value:           0x00000000004003D0
  - Name:            .text
    Type:            STT_SECTION
    Section:         .text
    Value:           0x00000000004003E0
  - Name:            .fini
    Type:            STT_SECTION
    Section:         .fini
    Value:           0x0000000000400554
  - Name:            .rodata
    Type:            STT_SECTION
    Section:         .rodata
    Value:           0x0000000000400560
  - Name:            .eh_frame_hdr
    Type:            STT_SECTION
    Section:         .eh_frame_hdr
    Value:           0x0000000000400570
  - Name:            .eh_frame
    Type:            STT_SECTION
    Section:         .eh_frame
    Value:           0x00000000004005A8
  - Name:            .init_array
    Type:            STT_SECTION
    Section:         .init_array
    Value:           0x0000000000600E10
  - Name:            .fini_array
    Type:            STT_SECTION
    Section:         .fini_array
    Value:           0x0000000000600E18
  - Name:            .jcr
    Type:            STT_SECTION
    Section:         .jcr
    Value:           0x0000000000600E20
  - Name:            .dynamic
    Type:            STT_SECTION
    Section:         .dynamic
    Value:           0x0000000000600E28
  - Name:            .got
    Type:            STT_SECTION
    Section:         .got
    Value:           0x0000000000600FF8
  - Name:            .got.plt
    Type:            STT_SECTION
    Section:         .got.plt
    Value:           0x0000000000601000
  - Name:            .data
    Type:            STT_SECTION
    Section:         .data
    Value:           0x0000000000601020
  - Name:            .bss
    Type:            STT_SECTION
    Section:         .bss
    Value:           0x0000000000601024
  - Name:            .comment
    Type:            STT_SECTION
    Section:         .comment
  - Name:            .debug_aranges
    Type:            STT_SECTION
    Section:         .debug_aranges
  - Name:            .debug_info
    Type:            STT_SECTION
    Section:         .debug_info
  - Name:            .debug_abbrev
    Type:            STT_SECTION
    Section:         .debug_abbrev
  - Name:            .debug_line
    Type:            STT_SECTION
    Section:         .debug_line
  - Name:            .debug_str
    Type:            STT_SECTION
    Section:         .debug_str
  - Name:            crtstuff.c
    Type:            STT_FILE
    Index:           SHN_ABS
  - Name:            __JCR_LIST__
    Type:            STT_OBJECT
    Section:         .jcr
    Value:           0x0000000000600E20
  - Name:            deregister_tm_clones
    Type:            STT_FUNC
    Section:         .text
    Value:           0x0000000000400410
  - Name:            register_tm_clones
    Type:            STT_FUNC
    Section:         .text
    Value:           0x0000000000400440
  - Name:            __do_global_dtors_aux
    Type:            STT_FUNC
    Section:         .text
    Value:           0x0000000000400480
  - Name:            completed.6355
    Type:            STT_OBJECT
    Section:         .bss
    Value:           0x0000000000601024
    Size:            0x0000000000000001
  - Name:            __do_global_dtors_aux_fini_array_entry
    Type:            STT_OBJECT
    Section:         .fini_array
    Value:           0x0000000000600E18
  - Name:            frame_dummy
    Type:            STT_FUNC
    Section:         .text
    Value:           0x00000000004004A0
  - Name:            __frame_dummy_init_array_entry
    Type:            STT_OBJECT
    Section:         .init_array
    Value:           0x0000000000600E10
  - Name:            main.cpp
    Type:            STT_FILE
    Index:           SHN_ABS
  - Name:            'crtstuff.c (1)'
    Type:            STT_FILE
    Index:           SHN_ABS
  - Name:            __FRAME_END__
    Type:            STT_OBJECT
    Section:         .eh_frame
    Value:           0x0000000000400698
  - Name:            __JCR_END__
    Type:            STT_OBJECT
    Section:         .jcr
    Value:           0x0000000000600E20
  - Type:            STT_FILE
    Index:           SHN_ABS
  - Name:            __init_array_end
    Section:         .init_array
    Value:           0x0000000000600E18
  - Name:            _DYNAMIC
    Type:            STT_OBJECT
    Section:         .dynamic
    Value:           0x0000000000600E28
  - Name:            __init_array_start
    Section:         .init_array
    Value:           0x0000000000600E10
  - Name:            __GNU_EH_FRAME_HDR
    Section:         .eh_frame_hdr
    Value:           0x0000000000400570
  - Name:            _GLOBAL_OFFSET_TABLE_
    Type:            STT_OBJECT
    Section:         .got.plt
    Value:           0x0000000000601000
  - Name:            __libc_csu_fini
    Type:            STT_FUNC
    Section:         .text
    Binding:         STB_GLOBAL
    Value:           0x0000000000400550
    Size:            0x0000000000000002
  - Name:            data_start
    Section:         .data
    Binding:         STB_WEAK
    Value:           0x0000000000601020
  - Name:            _edata
    Section:         .data
    Binding:         STB_GLOBAL
    Value:           0x0000000000601024
  - Name:            _fini
    Type:            STT_FUNC
    Section:         .fini
    Binding:         STB_GLOBAL
    Value:           0x0000000000400554
  - Name:            '__libc_start_main@@GLIBC_2.2.5'
    Type:            STT_FUNC
    Binding:         STB_GLOBAL
  - Name:            __data_start
    Section:         .data
    Binding:         STB_GLOBAL
    Value:           0x0000000000601020
  - Name:            __gmon_start__
    Binding:         STB_WEAK
  - Name:            __dso_handle
    Type:            STT_OBJECT
    Section:         .rodata
    Binding:         STB_GLOBAL
    Value:           0x0000000000400568
    Other:           [ STV_HIDDEN ]
  - Name:            _IO_stdin_used
    Type:            STT_OBJECT
    Section:         .rodata
    Binding:         STB_GLOBAL
    Value:           0x0000000000400560
    Size:            0x0000000000000004
  - Name:            __libc_csu_init
    Type:            STT_FUNC
    Section:         .text
    Binding:         STB_GLOBAL
    Value:           0x00000000004004E0
    Size:            0x0000000000000065
  - Name:            _end
    Section:         .bss
    Binding:         STB_GLOBAL
    Value:           0x0000000000601028
  - Name:            _start
    Type:            STT_FUNC
    Section:         .text
    Binding:         STB_GLOBAL
    Value:           0x00000000004003E0
  - Name:            __bss_start
    Section:         .bss
    Binding:         STB_GLOBAL
    Value:           0x0000000000601024
  - Name:            main
    Type:            STT_FUNC
    Section:         .text
    Binding:         STB_GLOBAL
    Value:           0x00000000004004CD
    Size:            0x0000000000000012
  - Name:            __TMC_END__
    Type:            STT_OBJECT
    Section:         .data
    Binding:         STB_GLOBAL
    Value:           0x0000000000601028
    Other:           [ STV_HIDDEN ]
  - Name:            _init
    Type:            STT_FUNC
    Section:         .init
    Binding:         STB_GLOBAL
    Value:           0x0000000000400390
DynamicSymbols:
  - Name:            __libc_start_main
    Type:            STT_FUNC
    Binding:         STB_GLOBAL
  - Name:            __gmon_start__
    Binding:         STB_WEAK
...
